package br.com.fotoxbh.geracao;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.imageio.ImageIO;

public class ConfigPrint implements Printable {

	private File arquivoImpressao;

	public ConfigPrint(String caminhoArquivo) {
		super();
		if (caminhoArquivo == null || caminhoArquivo.isEmpty()) {
			throw new IllegalArgumentException("O nome do arquivo deve ser informado");
		}
		
		this.arquivoImpressao = new File(caminhoArquivo);
		
		if(this.arquivoImpressao.exists()) {
			throw new IllegalArgumentException(String.format("O arquivo '%s' não existe."));
		}
	}

	@Override
	public int print(Graphics g, PageFormat f, int pageIndex)
			throws PrinterException {

		Graphics2D g2 = (Graphics2D) g;

		if (pageIndex == 0) {
			Paper p = new Paper();
			p.setSize(0.05555, 0.833333);
			f.setPaper(p);
			try {
				g2.drawImage(ImageIO.read(arquivoImpressao), null,
						pageIndex, pageIndex);
			} catch (IOException ex) {
				Logger.getLogger(ConfigPrint.class.getName()).log(Level.SEVERE,
						null, ex);
			}
			return PAGE_EXISTS;
		} else {
			return NO_SUCH_PAGE;
		}
		
		//http://www.guj.com.br/java/232736-imprimir-imagem
	}
}
